#!/bin/bash 

## @file mysql2rst
##
## @brief Librería para bash para transformar una consulta a mysql a una tabla valida para rst
##
## Este programa esta sujeto a la licencia GNU/GPL.
##
## En esta página podeis encontrar una traducción en castellano
## http://gugs.sindominio.net/licencias/gples.html
##
## y aquí la versión original http://www.gnu.org/licenses/gpl-3.0.html
##
## Uso:
##
## mysql2rst [Opciones] [Parametros para mysql]
## <pre>
## Opciones:
##
## -h        Ayuda
## -N        Para tener cabeceras en la tabla
## -e        "sql a ejecutar"
## </pre>
## Ejemplo: mysql2rst -uroot -p`contrasenya mysql` -e '$sql' trabajos
##
## @author   Eduardo Magrané
##
## @ingroup libash
##
## @internal
##
##       web  http://www.mamedu.com
##
##      mail  eduardo.mamedu.com
##
##  Revision  SVN $Id: $
##
## Copyright  Copyright (c) 2011, Eduardo Magrané
## 
## This source code is released for free distribution under the terms of the
## GNU General Public License as published by the Free Software Foundation.

function mysql2rst() {

   local encabezado=''
   local parametros=''


   while [ -n "$1" ] ; do

      case "$1" in
         
         -h|-help|--help|-info) doxygen2help "$0" ; exit ;;
         -N) encabezado='-N' ; shift 1 ;;
         -e) SQL=$2 ; shift 2 ;;
         *) parametros="$parametros $1" ; shift 1 ;;

      esac

   done

   local num_lineas=1
   [[ "$encabezado" = 'no' ]] && num_lineas=4;


   local conta=0
   local CMD="mysql -t $encabezado -e \"$SQL\" $parametros"

   echo

   DIFS="$IFS" # separador fin de linea para que salga linea por linea
   IFS=$'\n'
   for linea in $(eval $CMD) ; do

      # Si estamos en la linea 1 guardamos la linea como separador entre lineas

      if [ "$conta" = '0' ] ; then
         LINEA=$linea
         echo $linea

      # Si tenemos encabezado hay que imprimir la segunda linea
      elif [ "$encabezado" = '' ] && [ "$conta" = '1' ] ; then
         echo $linea

      # Si tenemos encabezado hay que sustituir la linea 3
      elif [ "$encabezado" = '' ] && [ "$conta" = '2' ] ; then
         echo $linea | sed 's/-/=/g'

      else

         if [ "$linea" != "$LINEA" ] ; then
            echo $linea
            echo $LINEA
         fi
      fi
      conta=$(($conta+1))
   done
   IFS="$DIFS"

}
